package org.dev.app.service;

import org.dev.app.entity.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

// 添加为容器内的一个组件
@Component
// 服务提供者提供的服务名称，即application.name
@FeignClient(value = "MICROSERVICECLOUDPROVIDERDEPT")
public interface DeptFeignService {

	// 对应服务提供者（8001、8002、8003）Controller中定义的方法
	@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
	Dept get(@PathVariable("id") int id);

	@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
	List<Dept> list();

	@RequestMapping(value = "/dept/feign/timeout")
	public String DeptFeignTimeout();
}
/**
 * 编写服务绑定接口时注意项：
 * 1. @FeignClient注解中， value属性的取值为：服务提供者的服务名，即服务提供者配置文件（application.yml）中
 * spring.application.name的取值
 * 2. 接口中定义的每个方法都与服务提供者（即micro-service-cloud-provider-dept-8001等）中Controller定义的服务方法对应
 * */
